package sv.gob.mh.dgii.model;

import java.math.BigDecimal;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;

@Entity
@Table(name = "ED_DECLARACIONES", schema = "EDADEPUDOC")
public class EdDeclaraciones implements java.io.Serializable {

	private static final long serialVersionUID = -7235266210465114698L;
	public static final String ESTADO_POSTEADA = "P";
	public static final String PROCESO_POSTEADA = "70";
	public static final String TIPO_ORIGINAL = "1";

	@Id
	@Column(name = "C_DECLARACION", unique = true, nullable = false, insertable = true, updatable = true, precision = 18, scale = 0)
	@NotNull
	private Long cdeclaracion;

	@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
	@JoinColumns( {
			@JoinColumn(name = "C_FORMULARIO", unique = false, nullable = false, insertable = true, updatable = true),
			@JoinColumn(name = "C_VERSION", unique = false, nullable = false, insertable = true, updatable = true) })
	@NotNull
	@Valid
	private TbFormulariosVersiones tbFormulariosVersiones;

	@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
	@JoinColumn(name = "C_UNIDAD_RECEPTORA", unique = false, nullable = true, insertable = true, updatable = true)
	@NotNull
	@Valid
	private TbUnidadRecep tbUnidadRecep;

	@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
	@JoinColumn(name = "N_NOTA_ABONO", unique = false, nullable = true, insertable = true, updatable = true)
	@NotNull
	@Valid
	private EdNotaAbono edNotaAbono;

	@Column(name = "N_FOLIO", unique = false, nullable = false, insertable = true, updatable = true, length = 12)
	@NotNull	
	private String nfolio;

	@Column(name = "N_FOLIO_MODIFICA", unique = false, nullable = true, insertable = true, updatable = true, length = 12)	
	private String nfolioModifica;

	@Temporal(TemporalType.DATE)
	@Column(name = "FP_DECLARACION", unique = false, nullable = true, insertable = true, updatable = true, length = 7)
	private Date fpdeclaracion;

	@Temporal(TemporalType.DATE)
	@Column(name = "F_PRESENTACION", unique = false, nullable = false, insertable = true, updatable = true, length = 7)
	@NotNull
	private Date fpresentacion;

	@Column(name = "B_ACTIVA", unique = false, nullable = false, insertable = true, updatable = true, precision = 1, scale = 0)
	@NotNull
	private Integer bactiva;

	@Column(name = "M_ESTADO", unique = false, nullable = false, insertable = true, updatable = true, length = 3)
	@NotNull
	private String mestado;

	@Column(name = "B_EXTEMPORANEA", unique = false, nullable = false, insertable = true, updatable = true, precision = 1, scale = 0)
	@NotNull
	private Integer bextemporanea;

	@Column(name = "V_TOTAL_PAGO", unique = false, nullable = false, insertable = true, updatable = true, precision = 18)
	@NotNull
	private BigDecimal vtotalPago;

	@Column(name = "V_TOTAL_DEVOLVER", unique = false, nullable = false, insertable = true, updatable = true, precision = 18)
	@NotNull
	private BigDecimal vtotalDevolver;

	@Column(name = "M_PROCESO", unique = false, nullable = false, insertable = true, updatable = true, length = 2)
	@NotNull
	private String mproceso;

	@Column(name = "C_MONEDA", unique = false, nullable = false, insertable = true, updatable = true, length = 2)
	@NotNull
	private String cmoneda;

	@Column(name = "S_XML", unique = false, nullable = true, insertable = true, updatable = true, length = 4000)
	private String sxml;

	@Column(name = "C_USUARIO", unique = false, nullable = false, insertable = true, updatable = true, length = 40)
	@NotNull
	private String cusuario;

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "F_INGRESO", unique = false, nullable = false, insertable = true, updatable = false)
	@NotNull
	private Date fingreso;

	@Column(name = "S_UBICACION", unique = false, nullable = true, insertable = true, updatable = true, length = 1000)
	private String subicacion;

	@Column(name = "NIT", unique = false, nullable = false, insertable = true, updatable = true, length = 14)
	@NotNull
	private String nit;

	@Column(name = "B_MODIFICATORIA", unique = false, nullable = false, insertable = true, updatable = true, precision = 1, scale = 0)
	@NotNull
	private Integer bmodificatoria;

	@Column(name = "M_FORMATO", unique = false, nullable = false, insertable = true, updatable = true, length = 1)
	@NotNull
	private String mformato;

	@Column(name = "M_INGRESO", unique = false, nullable = false, insertable = true, updatable = true, length = 1)
	@NotNull
	private String mingreso;

	@Column(name = "M_LIQ_IMPUESTO", length = 1)
	private String mliqImpuesto;

	@Temporal(TemporalType.DATE)
	@Column(name = "F_INACTIVACION")
	private Date finactivacion;

	@Column(name = "C_USU_INACTIVA")
	private String cusuarioInactiva;

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<EdDeclaracionesDetLog> edDeclaracionesDetLogs = new HashSet<EdDeclaracionesDetLog>(
			0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<DcDetImprentIva> dcDetImprentIvas = new HashSet<DcDetImprentIva>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<DcInfImprenta> dcInfImprentas = new HashSet<DcInfImprenta>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<DcInfDocivaExis> dcInfDocivaExises = new HashSet<DcInfDocivaExis>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<EdSupervNota> edSupervNotas = new HashSet<EdSupervNota>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<CgCaso> cgCasos = new HashSet<CgCaso>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<DcDetDocuIva> dcDetDocuIvas = new HashSet<DcDetDocuIva>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<DcImprenta> dcImprentas = new HashSet<DcImprenta>(0);
	
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<DvDevolucRta> dvDevolucRtas = new HashSet<DvDevolucRta>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<DcPagoDgt> dcPagoDgts = new HashSet<DcPagoDgt>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<DcMaqRegistro> dcMaqRegistros = new HashSet<DcMaqRegistro>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<DcCtrolFolio> dcCtrolFolios = new HashSet<DcCtrolFolio>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<DcDeclaracionOblig> dcDeclaracionObligs = new HashSet<DcDeclaracionOblig>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<EdDeclaracionesDet> edDeclaracionesDets = new HashSet<EdDeclaracionesDet>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<DvCuadroExpor> dvCuadroExpors = new HashSet<DvCuadroExpor>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<EdEjecVector> edEjecVectors = new HashSet<EdEjecVector>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<DvAutorizacionDevRenta> autorizacionDevRentas = new HashSet<DvAutorizacionDevRenta>(
			0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<EdDeclaracionesDetTmp> edDeclaracionesDetTmps = new HashSet<EdDeclaracionesDetTmp>(
			0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<EdErrores> edErroreses = new HashSet<EdErrores>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<EdPatente> edPatentes = new HashSet<EdPatente>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<DcIvaRetenper> dcIvaRetenpers = new HashSet<DcIvaRetenper>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<DcResolDet> dcResolDets = new HashSet<DcResolDet>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<EdAmnistia> edAmnistias = new HashSet<EdAmnistia>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<DvCredFisExp> dvCredFisExps = new HashSet<DvCredFisExp>(0);

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "edDeclaraciones")
	private Set<DvPagoIndeb> dvPagoIndebs = new HashSet<DvPagoIndeb>(0);


	public EdDeclaraciones() {}

	public EdDeclaraciones(Long cdeclaracion) {
		this.cdeclaracion = cdeclaracion;
	}
	
	public EdDeclaraciones(Long cdeclaracion, TbFormulariosVersiones tbFormulariosVersiones,
			EdNotaAbono edNotaAbono, String nfolio, Date fpdeclaracion, Date fpresentacion,
			Integer bactiva, String mestado, Integer bextemporanea, BigDecimal vtotalPago,
			BigDecimal vtotalDevolver, String mproceso, String cmoneda, String cusuario,
			Date fingreso, String nit, Integer bmodificatoria, String mformato, String mingreso) {
		this.cdeclaracion = cdeclaracion;
		this.tbFormulariosVersiones = tbFormulariosVersiones;
		this.edNotaAbono = edNotaAbono;
		this.nfolio = nfolio;
		this.fpdeclaracion = fpdeclaracion;
		this.fpresentacion = fpresentacion;
		this.bactiva = bactiva;
		this.mestado = mestado;
		this.bextemporanea = bextemporanea;
		this.vtotalPago = vtotalPago;
		this.vtotalDevolver = vtotalDevolver;
		this.mproceso = mproceso;
		this.cmoneda = cmoneda;
		this.cusuario = cusuario;
		this.fingreso = fingreso;
		this.nit = nit;
		this.bmodificatoria = bmodificatoria;
		this.mformato = mformato;
		this.mingreso = mingreso;
	}

	
	public Long getCdeclaracion() {
		return this.cdeclaracion;
	}

	public void setCdeclaracion(Long cdeclaracion) {
		this.cdeclaracion = cdeclaracion;
	}

	
	public TbFormulariosVersiones getTbFormulariosVersiones() {
		return this.tbFormulariosVersiones;
	}

	public void setTbFormulariosVersiones(TbFormulariosVersiones tbFormulariosVersiones) {
		this.tbFormulariosVersiones = tbFormulariosVersiones;
	}

	
	public TbUnidadRecep getTbUnidadRecep() {
		return this.tbUnidadRecep;
	}

	public void setTbUnidadRecep(TbUnidadRecep tbUnidadRecep) {
		this.tbUnidadRecep = tbUnidadRecep;
	}

	
	public EdNotaAbono getEdNotaAbono() {
		return this.edNotaAbono;
	}

	public void setEdNotaAbono(EdNotaAbono edNotaAbono) {
		this.edNotaAbono = edNotaAbono;
	}

	
	public String getNfolio() {
		return this.nfolio;
	}

	public void setNfolio(String nfolio) {
		this.nfolio = nfolio;
	}

	
	public String getNfolioModifica() {
		return this.nfolioModifica;
	}

	public void setNfolioModifica(String nfolioModifica) {
		this.nfolioModifica = nfolioModifica;
	}

	
	public Date getFpdeclaracion() {
		return this.fpdeclaracion;
	}

	public void setFpdeclaracion(Date fpdeclaracion) {
		this.fpdeclaracion = fpdeclaracion;
	}

	
	public Date getFpresentacion() {
		return this.fpresentacion;
	}

	public void setFpresentacion(Date fpresentacion) {
		this.fpresentacion = fpresentacion;
	}

	
	public Integer getBactiva() {
		return this.bactiva;
	}

	public void setBactiva(Integer bactiva) {
		this.bactiva = bactiva;
	}

	
	public String getMestado() {
		return this.mestado;
	}

	public void setMestado(String mestado) {
		this.mestado = mestado;
	}

	
	public Integer getBextemporanea() {
		return this.bextemporanea;
	}

	public void setBextemporanea(Integer bextemporanea) {
		this.bextemporanea = bextemporanea;
	}

	
	public BigDecimal getVtotalPago() {
		return this.vtotalPago;
	}

	public void setVtotalPago(BigDecimal vtotalPago) {
		this.vtotalPago = vtotalPago;
	}

	
	public BigDecimal getVtotalDevolver() {
		return this.vtotalDevolver;
	}

	public void setVtotalDevolver(BigDecimal vtotalDevolver) {
		this.vtotalDevolver = vtotalDevolver;
	}

	
	public String getMproceso() {
		return this.mproceso;
	}

	public void setMproceso(String mproceso) {
		this.mproceso = mproceso;
	}

	
	public String getCmoneda() {
		return this.cmoneda;
	}

	public void setCmoneda(String cmoneda) {
		this.cmoneda = cmoneda;
	}

	
	public String getSxml() {
		return this.sxml;
	}

	public void setSxml(String sxml) {
		this.sxml = sxml;
	}

	
	public String getCusuario() {
		return this.cusuario;
	}

	public void setCusuario(String cusuario) {
		this.cusuario = cusuario;
	}

	
	public Date getFingreso() {
		return this.fingreso;
	}

	public void setFingreso(Date fingreso) {
		this.fingreso = fingreso;
	}

	
	public String getSubicacion() {
		return this.subicacion;
	}

	public void setSubicacion(String subicacion) {
		this.subicacion = subicacion;
	}

	
	public String getNit() {
		return this.nit;
	}

	public void setNit(String nit) {
		this.nit = nit;
	}

	
	public Integer getBmodificatoria() {
		return this.bmodificatoria;
	}

	public void setBmodificatoria(Integer bmodificatoria) {
		this.bmodificatoria = bmodificatoria;
	}

	
	public String getMformato() {
		return this.mformato;
	}

	public void setMformato(String mformato) {
		this.mformato = mformato;
	}

	
	public String getMingreso() {
		return this.mingreso;
	}

	public void setMingreso(String mingreso) {
		this.mingreso = mingreso;
	}

	
	public Date getFinactivacion() {
		return finactivacion;
	}

	public void setFinactivacion(Date finactivacion) {
		this.finactivacion = finactivacion;
	}

	
	public String getCusuarioInactiva() {
		return cusuarioInactiva;
	}

	public void setCusuarioInactiva(String cusuarioInactiva) {
		this.cusuarioInactiva = cusuarioInactiva;
	}
	
	public String getMliqImpuesto() {
		return mliqImpuesto;
	}

	public void setMliqImpuesto(String mliqImpuesto) {
		this.mliqImpuesto = mliqImpuesto;
	}
	
	public Set<EdDeclaracionesDetLog> getEdDeclaracionesDetLogs() {
		return this.edDeclaracionesDetLogs;
	}

	public void setEdDeclaracionesDetLogs(Set<EdDeclaracionesDetLog> edDeclaracionesDetLogs) {
		this.edDeclaracionesDetLogs = edDeclaracionesDetLogs;
	}

	
	public Set<DcDetImprentIva> getDcDetImprentIvas() {
		return this.dcDetImprentIvas;
	}

	public void setDcDetImprentIvas(Set<DcDetImprentIva> dcDetImprentIvas) {
		this.dcDetImprentIvas = dcDetImprentIvas;
	}

	
	public Set<DcInfImprenta> getDcInfImprentas() {
		return this.dcInfImprentas;
	}

	public void setDcInfImprentas(Set<DcInfImprenta> dcInfImprentas) {
		this.dcInfImprentas = dcInfImprentas;
	}

	
	public Set<DcInfDocivaExis> getDcInfDocivaExises() {
		return this.dcInfDocivaExises;
	}

	public void setDcInfDocivaExises(Set<DcInfDocivaExis> dcInfDocivaExises) {
		this.dcInfDocivaExises = dcInfDocivaExises;
	}

	
	public Set<EdSupervNota> getEdSupervNotas() {
		return this.edSupervNotas;
	}

	public void setEdSupervNotas(Set<EdSupervNota> edSupervNotas) {
		this.edSupervNotas = edSupervNotas;
	}

	
	public Set<CgCaso> getCgCasos() {
		return this.cgCasos;
	}

	public void setCgCasos(Set<CgCaso> cgCasos) {
		this.cgCasos = cgCasos;
	}

	
	public Set<DcDetDocuIva> getDcDetDocuIvas() {
		return this.dcDetDocuIvas;
	}

	public void setDcDetDocuIvas(Set<DcDetDocuIva> dcDetDocuIvas) {
		this.dcDetDocuIvas = dcDetDocuIvas;
	}

	
	public Set<DcImprenta> getDcImprentas() {
		return this.dcImprentas;
	}

	public void setDcImprentas(Set<DcImprenta> dcImprentas) {
		this.dcImprentas = dcImprentas;
	}

	
	public Set<DvDevolucRta> getDvDevolucRtas() {
		return this.dvDevolucRtas;
	}

	public void setDvDevolucRtas(Set<DvDevolucRta> dvDevolucRtas) {
		this.dvDevolucRtas = dvDevolucRtas;
	}

	
	public Set<DcPagoDgt> getDcPagoDgts() {
		return this.dcPagoDgts;
	}

	public void setDcPagoDgts(Set<DcPagoDgt> dcPagoDgts) {
		this.dcPagoDgts = dcPagoDgts;
	}

	
	public Set<DcMaqRegistro> getDcMaqRegistros() {
		return this.dcMaqRegistros;
	}

	public void setDcMaqRegistros(Set<DcMaqRegistro> dcMaqRegistros) {
		this.dcMaqRegistros = dcMaqRegistros;
	}

	
	public Set<DcCtrolFolio> getDcCtrolFolios() {
		return this.dcCtrolFolios;
	}

	public void setDcCtrolFolios(Set<DcCtrolFolio> dcCtrolFolios) {
		this.dcCtrolFolios = dcCtrolFolios;
	}

	
	public Set<DcDeclaracionOblig> getDcDeclaracionObligs() {
		return this.dcDeclaracionObligs;
	}

	public void setDcDeclaracionObligs(Set<DcDeclaracionOblig> dcDeclaracionObligs) {
		this.dcDeclaracionObligs = dcDeclaracionObligs;
	}

	
	public Set<EdDeclaracionesDet> getEdDeclaracionesDets() {
		return this.edDeclaracionesDets;
	}

	public void setEdDeclaracionesDets(Set<EdDeclaracionesDet> edDeclaracionesDets) {
		this.edDeclaracionesDets = edDeclaracionesDets;
	}

	
	public Set<DvCuadroExpor> getDvCuadroExpors() {
		return this.dvCuadroExpors;
	}

	public void setDvCuadroExpors(Set<DvCuadroExpor> dvCuadroExpors) {
		this.dvCuadroExpors = dvCuadroExpors;
	}

	
	public Set<EdEjecVector> getEdEjecVectors() {
		return this.edEjecVectors;
	}

	public void setEdEjecVectors(Set<EdEjecVector> edEjecVectors) {
		this.edEjecVectors = edEjecVectors;
	}

	
	public Set<DvAutorizacionDevRenta> getAutorizacionDevRentas() {
		return autorizacionDevRentas;
	}

	public void setAutorizacionDevRentas(Set<DvAutorizacionDevRenta> autorizacionDevRentas) {
		this.autorizacionDevRentas = autorizacionDevRentas;
	}

	
	public Set<EdDeclaracionesDetTmp> getEdDeclaracionesDetTmps() {
		return this.edDeclaracionesDetTmps;
	}

	public void setEdDeclaracionesDetTmps(Set<EdDeclaracionesDetTmp> edDeclaracionesDetTmps) {
		this.edDeclaracionesDetTmps = edDeclaracionesDetTmps;
	}

	
	public Set<EdErrores> getEdErroreses() {
		return this.edErroreses;
	}

	public void setEdErroreses(Set<EdErrores> edErroreses) {
		this.edErroreses = edErroreses;
	}

	
	public Set<EdPatente> getEdPatentes() {
		return this.edPatentes;
	}

	public void setEdPatentes(Set<EdPatente> edPatentes) {
		this.edPatentes = edPatentes;
	}

	
	public Set<DcIvaRetenper> getDcIvaRetenpers() {
		return this.dcIvaRetenpers;
	}

	public void setDcIvaRetenpers(Set<DcIvaRetenper> dcIvaRetenpers) {
		this.dcIvaRetenpers = dcIvaRetenpers;
	}

	
	public Set<DcResolDet> getDcResolDets() {
		return this.dcResolDets;
	}

	public void setDcResolDets(Set<DcResolDet> dcResolDets) {
		this.dcResolDets = dcResolDets;
	}

	
	public Set<EdAmnistia> getEdAmnistias() {
		return edAmnistias;
	}

	public void setEdAmnistias(Set<EdAmnistia> edAmnistias) {
		this.edAmnistias = edAmnistias;
	}

	
	public Set<DvCredFisExp> getDvCredFisExps() {
		return dvCredFisExps;
	}

	
	public void setDvCredFisExps(Set<DvCredFisExp> dvCredFisExps) {
		this.dvCredFisExps = dvCredFisExps;
	}

	
	public Set<DvPagoIndeb> getDvPagoIndebs() {
		return dvPagoIndebs;
	}

	
	public void setDvPagoIndebs(Set<DvPagoIndeb> dvPagoIndebs) {
		this.dvPagoIndebs = dvPagoIndebs;
	}

}
